package com.partner.match.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.partner.match.model.dto.team.CreatedTeamReq;
import com.partner.match.model.dto.team.JoinTeamReq;
import com.partner.match.model.dto.team.QueryTeamResp;
import com.partner.match.model.dto.team.UpdateTeamReq;
import com.partner.match.model.entity.Team;


/**
 * @author jzz
 * @description 针对表【team(队伍表)】的数据库操作Service
 * @createDate 2025-01-25 10:26:45
 */
public interface TeamService extends IService<Team> {

    /**
     * 创建队伍
     *
     * @param teamReq
     * @param userId
     * @return
     */
    Long addTeam(CreatedTeamReq teamReq, Long userId);


    /**
     * 分页查询队伍信息
     *
     * @param currentPage 当前页
     * @param pageSize    页大小
     * @param teamName    队伍名称
     * @return
     */
    Page<QueryTeamResp> selectTeams(Long currentPage, Long pageSize, String teamName);

    /**
     * 修改队伍信息
     *
     * @param updateTeamReq 修改请求体
     */
    void updateTeam(UpdateTeamReq updateTeamReq);

    /**
     * 加入队伍
     *
     * @param teamReq 请求体
     * @param userId  用户Id
     * @return
     */
    Long joinTeam(JoinTeamReq teamReq, long userId);

    /**
     * 解散队伍
     *
     * @param teamId 队伍Id
     */
    void dissolveTeam(Long teamId);

    /**
     * 查看自己创建的队伍
     *
     * @param currentPage 当前页
     * @param pageSize 页大小
     * @return
     */
    Page<QueryTeamResp> selectTeamSelf(Long currentPage, Long pageSize);

    /**
     * 查看自己加入的队伍
     *
     * @param currentPage 当前页
     * @param pageSize 页大小
     * @return
     */
    Page<QueryTeamResp> selectJoinTeamSelf(Long currentPage, Long pageSize);
}
